package com.fau.om.service;

import java.io.IOException;
import java.util.List;
import java.util.Map;

import org.apache.poi.ss.usermodel.Workbook;

import com.fau.om.entity.MedicalAdmin;
import com.fau.om.entity.MedicalCallCustomer;
import com.fau.om.entity.MedicalOrders;
import com.fau.om.entity.MedicalOrdersLog;
import com.fau.om.entity.MedicalOrdersProduct;
import com.fau.om.entity.MedicalOrdersStorage;
import com.fau.om.util.Page;

/**
 * @desc 订单审核接口
 * @author kangyj
 * @datetime 2014年11月26日,下午3:04:14
 */
public interface IAuditManagerService {
	
	/**
	 * @desc 订单审核---查询待审核订单
	 * @param orders 订单
	 * @param map 分页参数
	 * @return page 分页对象
	 * @author kangyj
	 * @datetime 2014年11月25日,下午11:04:28
	 */
	public Page findPendingOrders(MedicalOrders orders, Map<String, Object> map);
	
	/**
	 * @desc 根据id查询订单
	 * @param id 订单id
	 * @return
	 * @author kangyj
	 * @datetime 2014年11月26日,上午1:50:36
	 */
	public MedicalOrdersStorage findOrdersById(String id);
	
	/**
	 * @desc 系统允许客户网退、退单数量
	 * @param eid 企业id
	 * @return
	 * @author kangyj
	 * @datetime 2015年2月18日,下午2:14:01
	 */
	public String findBackCount(String eid);
	
	/**
	 * @desc 通过订单id查询订单产品
	 * @param oid 订单id
	 * @return
	 * @author kangyj
	 * @datetime 2014年11月26日,上午2:02:25
	 */
	public List<MedicalOrdersProduct> findProductByOid(String oid);
	
	/**
	 * @desc 根据id 查询客户
	 * @param id 客户id
	 * @return
	 * @author kangyj
	 * @datetime 2014年11月26日,上午1:53:29
	 */
	public MedicalCallCustomer findCustomerById(String id);
	
	/**
	 * @desc 订单审核通过
	 * @param orders 订单对象
	 * @param admin 当前用户
	 * @author kangyj
	 * @datetime 2014年11月26日,上午9:37:23
	 */
	public void auditOrdersPass(MedicalAdmin admin, MedicalOrders orders);
	
	/**
	 * @desc 订单审核不通过
	 * @param orders 订单对象
	 * @param admin 当前用户
	 * @author kangyj
	 * @datetime 2014年11月26日,上午9:42:37
	 */
	public void auditOrdersNoPass(MedicalAdmin admin, MedicalOrders orders);
	
	/**
	 * @desc 订单审核无效
	 * @param orders 订单对象
	 * @param admin
	 * @author kangyj
	 * @datetime 2014年11月26日,上午9:43:44
	 */
	public void auditOrdersInvalid(MedicalOrders orders, MedicalAdmin admin);
	
	/**
	 * @desc 中心订单审核--查询中心待订单
	 * @param orders 订单对象
	 * @param map 分页参数
	 * @return
	 * @author suny
	 * @datetime 2014年9月15日,上午11:38:27
	 */
	public Page findPlatformPendingOrders(MedicalOrders orders, Map<String, Object> map, MedicalAdmin admin);
	
	/**
	 * @desc  查询本组待审核订单 
	 * @param orders 订单对象
	 * @param map 分页参数
	 * @return
	 * @author suny
	 * @datetime 2014年9月15日,下午1:58:26
	 */
	public Page findGroupPendingOrders(MedicalOrders orders,Map<String,Object> map, MedicalAdmin admin);
	
	/**
	 * @desc  查询我的待审核订单
	 * @param orders 订单对象
	 * @param map
	 * @return
	 * @author suny
	 * @datetime 2014年9月15日,下午1:58:40
	 */
	public Page findMyPendingOrders(MedicalOrders orders,Map<String, Object> map);
	
	/**
	 * @desc  待审核订单导出当前
	 * @param ids
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月9日 下午3:51:43
	 */
	public Workbook exportOrdersCurrent(String ids) throws Exception;
	
	/**
	 * @desc 待审核订单导出所有
	 * @param orders
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月10日 上午12:39:59
	 */
	public Workbook exportOrdersAll(MedicalOrders orders) throws Exception;

	/**
	 * @desc 中心待审核订单导出所有
	 * @param orders 订单对象
	 * @param admin 当前登录用户
	 * @return Workbook
	 * @throws IOException
	 * @author dangjh
	 * @datetime 2014年12月10日 上午12:39:59
	 */
	public Workbook exportCenterOrdersAll(MedicalOrders orders, MedicalAdmin admin) throws Exception;
	
	/**
	 * @desc 本组待审核订单导出所有
	 * @param orders
	 * @param admin
	 * @return
	 * @throws Exception
	 * @author kangyj
	 * @datetime 2015年3月17日,下午3:32:34
	 */
	public Workbook exportGroupOrdersAll(MedicalOrders orders, MedicalAdmin admin) throws Exception;
	
	/**
	 * @desc 我的待审核订单导出所有
	 * @param orders
	 * @param admin
	 * @return
	 * @throws Exception
	 * @author kangyj
	 * @datetime 2015年3月17日,下午3:33:02
	 */
	public Workbook exportMyOrdersAll(MedicalOrders orders, MedicalAdmin admin) throws Exception;
	
	/**
	 * @desc 根据订单号查找订单操作记录
	 * @param orderNo
	 * @return
	 * @author dangjh
	 * 2015年2月14日 下午4:39:46
	 */
	public List<MedicalOrdersLog> findOrdersLogByNo(String orderNo);
	
	/**
	 * @desc 订单审核验证（验证订单是否已被审核，是否已分配到话务员）
	 * @param ordersId 订单id
	 * @return
	 * @author kangyj
	 * @datetime 2015年2月15日,下午5:27:40
	 */
	public String validOrders(String ordersId);
	
}
